/* axios 基础的封装 */
import axios from "axios";
import { ElMessage } from 'element-plus'
import 'element-plus/theme-chalk/el-message.css'
import { useStateStore ,  } from "@/stores/use";
import router from "@/router";
const httpInstance = axios.create({
    baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net',
    timeout: 5000
})

/* 拦截器 */
/* 添加请求拦截器 */
httpInstance.interceptors.request.use( config => {
    /* 在发送请求之前做些什么 */
      // 1. 从pinia获取token数据
  const userStore = useStateStore()
  // 2. 按照后端的要求拼接token数据
  const token = userStore.userInfo.token
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, e =>{
    /* 对请求错误做些什么 */
    return Promise.reject(e);
});

/* 添加响应拦截器 */
httpInstance.interceptors.response.use(response => {
    /* 2xx 范围内的状态码都会触发该函数。 */
    /* 对响应数据做点什么 */
    return response;
}, e => {
    /*  超出 2xx 范围的状态码都会触发该函数。 */
    /* 对响应错误做点什么 */
    ElMessage({
        type:"warning",
        message:e.response.data.msg
    })
    /* 401处理 */
    if(e.response.status === 401){
        const userStore = useStateStore()
        userStore.clearUserInfo()
        router.push('/login')
    }
    return Promise.reject(e);
});

export default httpInstance